package com.yisu.auction.api.core.service;


import com.yisu.auction.api.domain.request.BasePage;
import com.yisu.auction.api.domain.request.memberPackage.LoginRequest;
import com.yisu.auction.api.domain.request.memberPackage.MemberInfoRequest;
import com.yisu.auction.api.domain.request.memberPackage.MemberRequest;
import com.yisu.auction.api.domain.request.rechargePackage.RechargeRequest;
import com.yisu.auction.api.domain.vo.memberPackageVos.MemberBaseInfoVo;
import com.yisu.auction.ewf.entity.Member;
import com.yisu.auction.ewf.entity.UserToken;

/**
 * author: 赵杰
 * 业务描述：会员业务相关接口
 * 时间：2017/8/7
 */
public interface IMemberService {
    /**
     * 作者：赵杰
     * 业务：通过会员ID获取会员信息
     * @param memberId 会员ID
     * @return 会员信息
     */
    Member getMemberByMemberId(long memberId);


    /**
     * 作者：赵杰
     * 业务：修改会员信息
     * @param updateModel 修改的会员信息
     * @return 会员信息
     */
    boolean updateMemberModel(Member updateModel);

    /**
     * 作者：赵杰
     * 业务：通过手机号码及密码获取用户信息
     * @param loginRequest 含会员手机号 密码
     * @return
     */
    Member getMemberByMobileAndPassword(LoginRequest loginRequest);

    /**
     * 作者：赵杰
     * 业务：通过手机号码
     * @param memberRequest 含会员手机号
     * @return
     */
    Member getMemberByMobile(MemberRequest memberRequest);

    /**
     * 作者：赵杰
     * 业务：通过用户token获取用户令牌信息
     * @param token 令牌号
     * @return
     */
    UserToken getUserTokenByToken(String token);


    /**
     * 作者：赵杰
     * 业务：通过MemberId,获取用户令牌信息
     * @param memberId 会员ID
     * @return
     */
    UserToken getUserTokenByMemberId(long memberId);

    /**
     * author: 赵杰
     * Business Description：通过第三方帐号及appSign获取会员基本信息
     *
     * @param memberRequest thirdID ，appSign
     * @return 会员基本信息
     */
    Member getMemberByThirdIdAndAppSign(MemberRequest memberRequest);

    /**
     * author: 赵杰
     * Business Description：通过第三方帐号及appSign 检测用户是否存在
     *
     * @param memberRequest thirdID ，appSign
     * @return 会员基本信息
     */
    boolean checkMemberByThirdIdAndAppSign(MemberRequest memberRequest);

    /**
     * 添加会员基本信息
     * @param member 会员基本信息
     * @return 成功，失败
     */
    MemberBaseInfoVo addMember(Member member);

    /**
     * author:黄萧林
     * 获取会员基本信息
     * @param memberRequest
     * @return
     */
    MemberBaseInfoVo getMemberBaseInfo(MemberRequest memberRequest);

    /**
     * author:黄萧林
     * Business Description:更新用户头像
     * @param memberInfoRequest
     * @return
     */
    boolean updateMemberIco(MemberInfoRequest memberInfoRequest);

    /**
     * author:黄萧林
     * Business Description:更新用户昵称
     * @param memberInfoRequest
     * @return
     */
    boolean updateMemberName(MemberInfoRequest memberInfoRequest);


    /**
     * author:黄萧林
     * Business Description:更新用户密码
     * @param memberInfoRequest
     * @return
     */
    boolean updateMemberPasswordForNoLogin(MemberInfoRequest memberInfoRequest);

    /**
     * author:黄萧林
     * Business Description:更新用户手机号
     * @param memberInfoRequest
     * @return
     */
    boolean updateMemberPhoneNumber(MemberInfoRequest memberInfoRequest);


    /**
     * 判断用户是否为新手
     * @param rechargeRequest
     * @return
     */
    int returnIsNewUser(RechargeRequest rechargeRequest);
}
